let any: any
let unknown: unknown
let never: never
let voi: void
any = ''
let num: number = any
let fns: () => any = () => any
fns = any
unknown = num
// num = unknown
// never = num
num = never

unknown = never
any = unknown
unknown = any
any = never
// never = any

voi = any

any = voi
unknown = voi

// num = voi
// fns = voi

type isChild<K,T> = K extends T ? true : false

interface Animal {
  name: string;
}

interface Dog extends Animal {
  wong: () => void
}

type result = isChild<Dog, Animal> // true

function testOverload(params: any): any;
function testOverload(params: string): string;

function testOverload(params: any): string {
  return params.toString()
}

const res = testOverload(12)
const res2 = testOverload('abc')
console.log(res, res2)

